// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package de.greenrobot.dao.test;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import de.greenrobot.dao.AbstractDao;
import de.greenrobot.dao.InternalUnitTestDaoAccess;
import de.greenrobot.dao.Property;
import de.greenrobot.dao.internal.SqlUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
// Referenced classes of package de.greenrobot.dao.test:
// AbstractDaoTest
public abstract class AbstractDaoTestSinglePk extends AbstractDaoTest
{
private Property pkColumn;
protected Set usedPks;
public AbstractDaoTestSinglePk(Class class1)
{
super(class1);
usedPks = new HashSet();
}
protected abstract Object createEntity(Object obj);
protected Object createEntityWithRandomPk()
{
return createEntity(nextPk());
}
protected abstract Object createRandomPk();
protected Object nextPk()
{
for (int i = 0; i < 0x186a0; i++)
{
Object obj = createRandomPk();
if (usedPks.add(obj))
{
return obj;
}
}
throw new IllegalStateException("Could not find a new PK");
}
protected Cursor queryWithDummyColumnsInFront(int i, String s, Object obj)
{
int j = 0;
StringBuilder stringbuilder = new StringBuilder("SELECT ");
for (int k = 0; k < i; k++)
{
stringbuilder.append(s).append(",");
}
SqlUtils.appendColumns(stringbuilder, "T", dao.getAllColumns()).append(" FROM ");
stringbuilder.append(dao.getTablename()).append(" T");
if (obj != null)
{
stringbuilder.append(" WHERE ");
assertEquals(1, dao.getPkColumns().length);
stringbuilder.append(dao.getPkColumns()[0]).append("=");
DatabaseUtils.appendValueToSql(stringbuilder, obj);
}
String s1 = stringbuilder.toString();
Cursor cursor = db.rawQuery(s1, null);
assertTrue(cursor.moveToFirst());
do
{
if (j >= i)
{
break;
}
try
{
assertEquals(s, cursor.getString(j));
}
catch (RuntimeException runtimeexception)
{
cursor.close();
throw runtimeexception;
}
j++;
} while (true);
if (obj == null)
{
break MISSING_BLOCK_LABEL_198;
}
assertEquals(1, cursor.getCount());
return cursor;
}
protected void runLoadPkTest(int i)
{
Object obj;
Cursor cursor;
obj = nextPk();
Object obj1 = createEntity(obj);
dao.insert(obj1);
cursor = queryWithDummyColumnsInFront(i, "42", obj);
assertEquals(obj, daoAccess.readKey(cursor, i));
cursor.close();
return;
Exception exception;
exception;
cursor.close();
throw exception;
}
protected void setUp()
{
super.setUp();
Property aproperty[] = daoAccess.getProperties();
int i = aproperty.length;
for (int j = 0; j < i; j++)
{
Property property = aproperty[j];
if (!property.primaryKey)
{
continue;
}
if (pkColumn != null)
{
throw new RuntimeException("Test does not work with multiple PK columns");
}
pkColumn = property;
}
if (pkColumn == null)
{
throw new RuntimeException("Test does not work without a PK column");
} else
{
return;
}
}
public void testCount()
{
dao.deleteAll();
assertEquals(0L, dao.count());
dao.insert(createEntityWithRandomPk());
assertEquals(1L, dao.count());
dao.insert(createEntityWithRandomPk());
assertEquals(2L, dao.count());
}
public void testDelete()
{
Object obj = nextPk();
dao.deleteByKey(obj);
Object obj1 = createEntity(obj);
dao.insert(obj1);
assertNotNull(dao.load(obj));
dao.deleteByKey(obj);
assertNull(dao.load(obj));
}
public void testDeleteAll()
{
ArrayList arraylist = new ArrayList();
for (int i = 0; i < 10; i++)
{
arraylist.add(createEntityWithRandomPk());
}
dao.insertInTx(arraylist);
dao.deleteAll();
assertEquals(0L, dao.count());
Object obj1;
for (Iterator iterator = arraylist.iterator(); iterator.hasNext(); assertNull(dao.load(obj1)))
{
Object obj = iterator.next();
obj1 = daoAccess.getKey(obj);
assertNotNull(obj1);
}
}
public void testDeleteByKeyInTx()
{
ArrayList arraylist = new ArrayList();
for (int i = 0; i < 10; i++)
{
arraylist.add(createEntityWithRandomPk());
}
dao.insertInTx(arraylist);
ArrayList arraylist1 = new ArrayList();
arraylist1.add(daoAccess.getKey(arraylist.get(0)));
arraylist1.add(daoAccess.getKey(arraylist.get(3)));
arraylist1.add(daoAccess.getKey(arraylist.get(4)));
arraylist1.add(daoAccess.getKey(arraylist.get(8)));
dao.deleteByKeyInTx(arraylist1);
assertEquals(arraylist.size() - arraylist1.size(), dao.count());
Object obj;
for (Iterator iterator = arraylist1.iterator(); iterator.hasNext(); assertNull(dao.load(obj)))
{
obj = iterator.next();
assertNotNull(obj);
}
}
public void testDeleteInTx()
{
ArrayList arraylist = new ArrayList();
for (int i = 0; i < 10; i++)
{
arraylist.add(createEntityWithRandomPk());
}
dao.insertInTx(arraylist);
ArrayList arraylist1 = new ArrayList();
arraylist1.add(arraylist.get(0));
arraylist1.add(arraylist.get(3));
arraylist1.add(arraylist.get(4));
arraylist1.add(arraylist.get(8));
dao.deleteInTx(arraylist1);
assertEquals(arraylist.size() - arraylist1.size(), dao.count());
Object obj1;
for (Iterator iterator = arraylist1.iterator(); iterator.hasNext(); assertNull(dao.load(obj1)))
{
Object obj = iterator.next();
obj1 = daoAccess.getKey(obj);
assertNotNull(obj1);
}
}
public void testInsertAndLoad()
{
Object obj = nextPk();
Object obj1 = createEntity(obj);
dao.insert(obj1);
assertEquals(obj, daoAccess.getKey(obj1));
Object obj2 = dao.load(obj);
assertNotNull(obj2);
assertEquals(daoAccess.getKey(obj1), daoAccess.getKey(obj2));
}
public void testInsertInTx()
{
dao.deleteAll();
ArrayList arraylist = new ArrayList();
for (int i = 0; i < 20; i++)
{
arraylist.add(createEntityWithRandomPk());
}
dao.insertInTx(arraylist);
assertEquals(arraylist.size(), dao.count());
}
public void testInsertOrReplaceInTx()
{
dao.deleteAll();
ArrayList arraylist = new ArrayList();
ArrayList arraylist1 = new ArrayList();
for (int i = 0; i < 20; i++)
{
Object obj = createEntityWithRandomPk();
if (i % 2 == 0)
{
arraylist.add(obj);
}
arraylist1.add(obj);
}
dao.insertOrReplaceInTx(arraylist);
dao.insertOrReplaceInTx(arraylist1);
assertEquals(arraylist1.size(), dao.count());
}
public void testInsertOrReplaceTwice()
{
Object obj = createEntityWithRandomPk();
long l = dao.insert(obj);
long l1 = dao.insertOrReplace(obj);
if (dao.getPkProperty().type == java/lang/Long)
{
assertEquals(l, l1);
}
}
public void testInsertTwice()
{
Object obj = createEntity(nextPk());
dao.insert(obj);
try
{
dao.insert(obj);
fail("Inserting twice should not work");
return;
}
catch (SQLException sqlexception)
{
return;
}
}
public void testLoadAll()
{
dao.deleteAll();
ArrayList arraylist = new ArrayList();
for (int i = 0; i < 15; i++)
{
arraylist.add(createEntity(nextPk()));
}
dao.insertInTx(arraylist);
List list = dao.loadAll();
assertEquals(arraylist.size(), list.size());
}
public void testLoadPk()
{
runLoadPkTest(0);
}
public void testLoadPkWithOffset()
{
runLoadPkTest(10);
}
public void testQuery()
{
dao.insert(createEntityWithRandomPk());
Object obj = nextPk();
dao.insert(createEntity(obj));
dao.insert(createEntityWithRandomPk());
String s = (new StringBuilder()).append("WHERE ").append(dao.getPkColumns()[0]).append("=?").toString();
AbstractDao abstractdao = dao;
String as[] = new String[1];
as[0] = obj.toString();
List list = abstractdao.queryRaw(s, as);
assertEquals(1, list.size());
assertEquals(obj, daoAccess.getKey(list.get(0)));
}
public void testReadWithOffset()
{
Object obj;
Cursor cursor;
obj = nextPk();
Object obj1 = createEntity(obj);
dao.insert(obj1);
cursor = queryWithDummyColumnsInFront(5, "42", obj);
Object obj2 = daoAccess.readEntity(cursor, 5);
assertEquals(obj, daoAccess.getKey(obj2));
cursor.close();
return;
Exception exception;
exception;
cursor.close();
throw exception;
}
public void testRowId()
{
Object obj = createEntityWithRandomPk();
Object obj1 = createEntityWithRandomPk();
boolean flag;
if (dao.insert(obj) != dao.insert(obj1))
{
flag = true;
} else
{
flag = false;
}
assertTrue(flag);
}
public void testUpdate()
{
dao.deleteAll();
Object obj = createEntityWithRandomPk();
dao.insert(obj);
dao.update(obj);
assertEquals(1L, dao.count());
}
}